const http = {
	//baseUrl地址
	basaUrl: "http://192.168.10.130:8088/api",
	// basaUrl: 'http://mail.rlhotel.cn/api/',
	//请求方法
	request(config) {
		//config:请求配置对象
		config = beforeRequest(config)
		config.url = this.basaUrl + config.url
		//创建一个Promise对象，在里边发送请求
		return new Promise((resolve, reject) => {
			uni.request(config).then(res => {
				let [error, resp] = res
				const response = beforeResponse(resp)
				resolve(response)
				uni.redirectTo({
					url: '/pages/index/index'
				});
			}).catch(err => {
				errorHandle(err)
				reject(err)
			})
		})
	},
	//文件请求
	requestFile(config) {
		return new Promise((resolve, reject) => {
			config.url = this.basaUrl + config.url
			uni.uploadFile({
				url: config.url, // 仅为示例，请替换为实际的上传接口地址
				filePath: config.filePath,
				name: 'file', // 根据你的接口要求调整
				formData: {
					'fileType': 'USER_FILES',
					'fileNumber': 'app',
					"token": uni.getStorageSync("token")
				},
				success: (uploadRes) => {
					const response = beforeResponse(JSON.parse(uploadRes.data))
					resolve(response)
				},
				fail: (uploadErr) => {
					// 上传失败的处理
					// console.error('upload fail:', uploadErr);
					uni.$u.toast('上传失败')
				}
			});
		});
	},
	uploadFile(url, tempFilePaths) {
		return this.requestFile({
			url: url,
			filePath: tempFilePaths
		})
	},
	get(url, data, auth) {
		/**
		 * url:接口地址
		 * data:查询参数
		 * auth:请求是否需要待token进行认证(true,false)
		 */
		return this.request({
			url: url,
			data: data,
			auth: auth,
			method: "GET"
		})
	},
	delete(url, auth) {
		return this.request({
			url: url,
			data: data,
			method: "DELETE"
		})
	},
	post(url, data, auth) {
		return this.request({
			url: url,
			data: data,
			auth: auth,
			method: "POST"
		})
	},
	put(url, data, auth) {
		return this.request({
			url: url,
			data: data,
			auth: auth,
			method: "PUT"
		})
	}
}
//请求拦截器 
const beforeRequest = (config) => {
	config.header = {}
	//请求之前做的操作
	if (config.auth) {
		// uni.removeStorageSync("token")
		if (uni.getStorageSync("token")) {
			//在请求头中加token
			config.header = {
				"token": uni.getStorageSync("token")
			}
		}
		//else {
		// 	//重定向到登录页面
		// 	uni.navigateTo({
		// 		url: '/pages/user/login'
		// 	})
		// 	uni.$u.toast('请重新登录')
		// }

	}
	return config
}
//响应拦截器
const beforeResponse = (response) => {
	// console.log(response)
	// console.log("响应拦截器：", response.data)
	return response.data;
}
//异常处理器
const errorHandle = (err) => {
	// 监控网络状态
	uni.getNetworkType({
		success: function(res) {
			// uni.$u.toast(res.networkType)
			// 如果网络类型为none，则表示网络已断开
			if (res.networkType === 'none') {
				// 跳转到连接失败页面
				uni.navigateTo({
					url: '/pages/error/error',
					
					animationType: 'pop-in'
				})
			}
		}
	});
	uni.$u.toast("链接失败，请稍后重试")
	// console.log("网络异常请求失败", err)
}

export default http